using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.ModelConfiguration;

namespace teste.Models.Mapping
{
    public class ENDERECOMap : EntityTypeConfiguration<ENDERECO>
    {
        public ENDERECOMap()
        {
            // Primary Key
            this.HasKey(t => t.Id);

            // Properties
            this.Property(t => t.Logradouro)
                .IsRequired();

            this.Property(t => t.Lote)
                .IsRequired();

            this.Property(t => t.Quadra)
                .IsRequired();

            this.Property(t => t.Bairro)
                .IsRequired();

            this.Property(t => t.Cidade)
                .IsRequired();

            this.Property(t => t.Uf)
                .IsRequired();

            // Table & Column Mappings
            this.ToTable("ENDERECO");
            this.Property(t => t.Id).HasColumnName("Id");
            this.Property(t => t.Codigo).HasColumnName("Codigo");
            this.Property(t => t.Logradouro).HasColumnName("Logradouro");
            this.Property(t => t.Numero).HasColumnName("Numero");
            this.Property(t => t.Lote).HasColumnName("Lote");
            this.Property(t => t.Quadra).HasColumnName("Quadra");
            this.Property(t => t.Bairro).HasColumnName("Bairro");
            this.Property(t => t.Complemento).HasColumnName("Complemento");
            this.Property(t => t.Cep).HasColumnName("Cep");
            this.Property(t => t.Cidade).HasColumnName("Cidade");
            this.Property(t => t.Uf).HasColumnName("Uf");
            this.Property(t => t.Cliente_Id).HasColumnName("Cliente_Id");

            // Relationships
            this.HasOptional(t => t.CLIENTE)
                .WithMany(t => t.ENDERECOes)
                .HasForeignKey(d => d.Cliente_Id);

        }
    }
}
